StupidBeauty
Read times:940Posted at:Mon Mar 17 03:51:57 2014
- no title specified

Smack3.4.1文档翻译:Smack:连接管理,Smack: Connection Management

创建 一个连接

org.jivesoftware.smack.Connection 类管理着妳与XMPP 服务器之间的连接。默认 的实现是 org.jivesoftware.smack.XMPPConnection 类。 主要是使用两个构造函数。第一 个, XMPPConnection(String) 其参数是妳想要连接到的那个服务器的主机名。此时 会使用其它方面的默认连接选项:

  • •. 会通过一个DNS SRV查询来找到该服务器所在的具体地址及端口号(一般是5222)。

  • •. 会与服务器协商采用能够达到的具有最大安全性的连接选项,包括TLS加密,但是在必要的情况下会降级采用较低安全性的选项。

  • •.会使用"Smack"作为该连接的XMPP 资源名字。

或者 ,妳可使用 XMPPServer(ConnectionConfiguration) 构造函数 来指定 一些高级的连接选项。其中 一些选项包括:

  • •.手动指定服务器的地址及端口号,而不是依靠DNS SRV查询

  • •.启用连接压缩

  • •.对安全性选项进行自定义,例如加上标志位,使得该连接明确要求支持TLS 加密才可建立。

  • •.指定一个自定义的连接资源名字,例如“工作”或“家”。由用户发起到服务器的每个连接都必须拥有一个唯一的资源名字。对于用户"jsmith@example.com",带有资源名字的完整地址可能是"jsmith@example.com/Smack"。在使用唯一的资源名字进行标识的情况下,同一个用户可以同时从不同的位置登陆到同一个服务器,或者使用多个设备。每个资源的可用性优先级的值,用于决定,当有消息发往不带资源名字的原始地址(在我们这个例子中就是"jsmith@example.com")时,会由哪个连接接收到该消息。

连接 及断开连接

// 创建针对新连接的配置对象

ConnectionConfiguration config = new ConnectionConfiguration("jabber.org", 5222);

config.setCompressionEnabled(true);

config.setSASLAuthenticationEnabled(true);

Connection connection = new XMPPConnection(config);

// 连接至服务器

connection.connect();

// 登陆到服务器上

connection.login("username", "password", "SomeResource");

....

// 从服务器断开连接

connection.disconnect();

默认情况下,当连接被意外断开时,Smack会尝试重新进行连接。 使用ConnectionConfiguration#setReconnectionAllowed(boolean) 来开启/关闭此功能。重新连接 的管理器会在断开连接时立即尝试重新连接 到服务器 ,并且 在后续重试动作仍然失败的情况下会逐渐增大重试之前的延迟时间长度。
如果妳想在重新连接管理器等待进行下一次重新连接时强制让它立即做一次重新连接的话,则,妳可以调用 Connection#connect() ,此时会立即进行一次尝试。如果手动的尝试动作仍然失败的话,则,重新连接管理器会继续执行之前的重新连接过程。


未知美人

Your opinions
Your name:Email:Website url:Opinion content:
- no title specified

HxLauncher: Launch Android applications by voice commands